package com.kmxd.ams.client.archive;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.kmxd.ams.client.archive.dto.ArchiveFieldAddDTO;
import com.kmxd.ams.client.archive.dto.ArchiveFieldEditDTO;
import com.kmxd.ams.client.archive.dto.ArchiveFieldEditSortDTO;
import com.kmxd.ams.client.archive.dto.ArchiveFieldQueryDTO;
import com.kmxd.ams.client.archive.vo.ArchiveFieldListVO;
import com.kmxd.ams.client.archive.vo.ArchiveFieldVO;
import com.kmxd.ams.infra.archive.entity.ArchiveField;

import java.util.List;
import java.util.Set;

/**
 * 门类配置-元数据 服务类
 *
 * @author ZuoLG
 * @since 2022-07-15
 */
public interface IArchiveFieldSvc extends IService<ArchiveField> {

  /**
   * 分页查询
   *
   * @param reqPage
   * @param req
   * @return
   */
  Page<ArchiveFieldListVO> selectPage(Page reqPage, ArchiveFieldQueryDTO req);

  /**
   * 查询列表
   *
   * @param req
   * @return
   */
  List<ArchiveFieldListVO> selectList(ArchiveFieldQueryDTO req);

  /**
   * 查询列表附件路径配置
   *
   * @param req
   * @return
   */
  List<ArchiveFieldListVO> selectListByOssSetting(ArchiveFieldQueryDTO req);

  /**
   * 导出字段获取
   *
   * @param req
   * @return
   */
  List<ArchiveFieldListVO> selectListByExport(ArchiveFieldQueryDTO req);

  /**
   * 查询所有
   *
   * @return
   */
  List<ArchiveFieldListVO> selectListAll();

  /**
   * 查询列表
   *
   * @param req
   * @return
   */
  List<ArchiveFieldListVO> selectListClumns(ArchiveFieldQueryDTO req);

  /**
   * 著录界面表单查询
   *
   * @param req
   * @return
   */
  List<ArchiveFieldListVO> selectListByform(ArchiveFieldQueryDTO req);

  /**
   * 根据ids查询列表
   *
   * @param ids
   * @return
   */
  List<ArchiveFieldListVO> selectListByIds(Set<Long> ids);

  /**
   * 根据tableId获取数据
   *
   * @param tableId
   * @return
   */
  List<ArchiveFieldListVO> selectListByTableId(String tableId);

  /**
   * 新增
   *
   * @param req
   */
  void add(ArchiveFieldAddDTO req);

  /**
   * 修改
   *
   * @param req
   */
  void edit(ArchiveFieldEditDTO req);

  /**
   * 修改排序
   *
   * @param req
   */
  void updateSort(ArchiveFieldEditSortDTO req);

  /**
   * 删除
   *
   * @param ids
   */
  void remove(String ids);

  /**
   * 查看
   *
   * @param id
   * @return
   */
  ArchiveFieldVO view(Long id);

  /**
   * 通过门类信息 字段key获取字段信息
   *
   * @param req
   * @return
   */
  ArchiveFieldVO getByFiledKey(ArchiveFieldQueryDTO req);

  /** 清除所有缓存 */
  void clearAllCache();

  List<ArchiveFieldListVO> selectSearchList(List<String> tableList);
}
